package com.wash.shoes.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wash.shoes.entity.ShopPo;
import com.wash.shoes.entity.UserShopPo;
import com.wash.shoes.resp.BindRecordResp;

/**
 * <p>
 * 用户关联的店铺 Mapper 接口
 * </p>
 *
 * @author ljg
 * @since 2024-10-11
 */
public interface UserShopMapper extends BaseMapper<UserShopPo> {

    /**
     * @author lijianguo
     * @Date 11/10/2024 请输入方法的简介
     **/
    List<ShopPo> noConnectionShopList(@Param("page") Page page, @Param("shopName") String shopName,
        @Param("userId") String userId, @Param("type") String type);

    /**
     * 获取未绑定/已绑定的列表
     *
     * @param action bind or unbind
     * @param userId 用户id
     * @param type UserBindTypeEnum bindType
     * @return
     */
    IPage<BindRecordResp>/*<BindRecordResp>*/ getUnBindList(IPage page, @Param("action") String action,
        @Param("userId") String userId, @Param("type") String type, @Param("status") String status,
        @Param("name") String name, @Param("brandId") String brandId, @Param("channel") String channel);

    /**
     * @author lijianguo
     * @Date 13/10/2024 请输入方法的简介
     **/
    List<ShopPo> userShopList(@Param("page") Page page, @Param("userId") String userId);

    /**
     * @author lijianguo
     * @Date 13/10/2024 请输入方法的简介
     **/
    UserShopPo userAssociateShopData(@Param("userId") String userId, @Param("shopId") String shopId);

    /**
     * @param userId
     * @return
     */
    List<ShopPo> userAllShopList(@Param("userId") String userId);

    /**
     * 根据用户id查询用户关联的店铺id
     *
     * @param userId 用户id
     * @return
     */
    List<String> queryShopIdByUserId(@Param("userId") String userId);

    /**
     * 获取当前用户id绑定的类型,是工厂还是店铺,按理来说正常只能绑定一种类型
     * 
     * @param userId
     * @return
     */
    List<String> getUserBindType(@Param("userId") String userId);
}
